#ifndef RS232_H
#define RS232_H

#include <avr/io.h>

/**
 * Stała przechowująca prędkość USART
 */
#define UART_CONST        (F_CPU/(16ul*UART_BAUD)-1)

/**
 * Stala potrzebna do kontroli transmisji.
 */
#define XON 0x11

/**
 * Stala potrzebna do kontroli transmisji.
 */
#define XOFF 0x13

/**
 * Funkcja inicjalizująca USART. Ustawia prędkość transmisji oraz uruchamia ją. Jest typu inline, bo uruchamia się ją tylko raz na początku programu.
 */
inline void USART_Start();

/**
 * Funkcja wysyłająca przez UART podany znak. Jest w całości skopiowana z datasheeta;
 */
void USART_Transmit(unsigned char);

/**
 * Funkcja pobiera znak przez USART i zwraca go. Jest w całości skopiowana z datasheeta;
 */
unsigned char USART_Receive(void);

inline void USART_Start()
{
    UBRRH = (unsigned char)(UART_CONST>>8);
    UBRRL = (unsigned char)UART_CONST;
    UCSRB = _BV(RXEN)|_BV(TXEN);
}

#endif
